public class minArray {
    public int _minArray(int[] numbers) {
        // 使用二分法
        // pivot处的值大于high的，它肯定不是最小值，所以可以放心大胆地pivot+1；若pivot处的值小于high，它有可能就是最小值，不能轻易地把它给排除，需要继续观察。
        int low = 0;
        int high = numbers.length - 1;
        while (low < high) {
            int pivot = low + (high - low) / 2;

            if (numbers[pivot] > numbers[high]) {
                low = pivot + 1;
            } else if (numbers[pivot] < numbers[high]) {
                high = pivot;
            } else {
                high--;
            }
        }
        return numbers[low];
    }
}
